import axios from 'axios';
import nprogress from 'nprogress';
import 'nprogress/nprogress.css';
import { getToken, delToken, delUser } from '../utils/storageUtils'
// 二次封装 // 1. 统一处理错误// 2. 优化返回数据格式// 3. loading// 4. 添加公共参数// 5. 设置默认配置项
// 创建实例化对象
let userAxios = axios.create({
        baseURL: "http://localhost",
        timeout: 3000
    })
    // 创建请求拦截器
userAxios.interceptors.request.use(config => {
    // 公共参数设置
    // loading
    nprogress.start()

    console.log(config);

    let token = getToken();

    if (token) {
        config.headers.token = token;
    }

    return config;
})
userAxios.interceptors.response.use(res => {
    // 获取数据的情况
    // loading
    nprogress.done()
    return res.data;
}, err => {
    // 处理请求接收失败的情况
    // loading
    nprogress.done()
        // console.log('进来了');
        // console.log(err.response.status);
    let sCode = err.response.status;
    if (sCode === 401) {
        // token非法或过期
        // 删除用户及token信息
        delToken()
        delUser()

        // 跳转到登录页
        window.location.href = '/login.html';
    } else {
        alert(err.message);
    }

    // 可以继续保持失败的结果
    throw err;
})
export default userAxios;